package at.spengergasse.model;

@SuppressWarnings("serial")
public class Bestellen extends ModelBase
{
	private int menge;
	private int position;
	@SuppressWarnings("unused")
	private Rechnung rechnung;
	private Long rechnungsId;
	@SuppressWarnings("unused")
	private Produkte produkt;
	private Long produktId;

	// TODO Sinnhaftigkeit des Konstruktors?
	public Bestellen(Long produktId, int menge)
	{
		super();
		setMenge(menge);
		setProduktId(produktId);
	}

	public Bestellen(Long bestellId, Long produktId, Long rechnungsId,
			int menge, int position)
	{
		super();
		this.id = bestellId;
		setMenge(menge);
		setRechnungsId(rechnungsId);
		setProduktId(produktId);
		setPosition(position);
	}

	public int getMenge()
	{
		return menge;
	}

	public int getPosition()
	{
		return position;
	}

	public Long getRechnungsId()
	{
		return rechnungsId;
	}

	public Long getProduktId()
	{
		return produktId;
	}

	public void setMenge(int menge)
	{
		if (menge <= 0)
			throw new IllegalArgumentException(
					"Menge darf nicht kleiner gleich null sein");
		this.menge = menge;
	}

	public void setPosition(int pos)
	{
		if (pos < 0)
			throw new IllegalArgumentException(
					"Position darf nicht kleiner null sein");
		this.position = pos;

	}

	public void setRechnung(Rechnung rechnung)
	{
		if (rechnung == null)
			throw new IllegalArgumentException("Rechnung darf nicht null sein");
		this.rechnung = rechnung;
		setRechnungsId(rechnung.getId());
	}

	public void setRechnungsId(Long rechnungsId)
	{
		if (rechnungsId == null)
			rechnung = null;
		this.rechnungsId = rechnungsId;
	}

	public void setProdukt(Produkte produkt)
	{
		if (produkt == null)
			throw new IllegalArgumentException("Produkt darf nicht null sein");
		this.produkt = produkt;
		setProduktId(produkt.getId());
	}

	public void setProduktId(Long produktId)
	{
		if (produktId == null)
			produkt = null;
		this.produktId = produktId;
	}

	public String toString()
	{
		return new StringBuilder().append(super.toString())
				.append("BestellId ").append(id).append("ProduktID ").append(
						produktId).append("RechnungsID ").append(rechnungsId)
				.append(" Menge ").append(menge).append(" Position ").append(
						position).toString();
	}
}
